/** 资源库 js存放方法相当于后端的util层
 * 对文本框的操作
 * @author 康文程
 * @date 2023-12-5 上午 08:41
 */
class Input_util {
    /**
     * 判断input是否是邮箱
     * @param input 邮箱
     * @returns {boolean} true有效 false无效
     */
    isEmail(input) {
        let regex = /^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$/;
        return regex.test(input);
    }

    /**
     * 判断input是否是手机号
     * @param input 手机号
     * @returns {boolean} true有效 false无效
     */
    isPhoneNumber(input) {
        let regex = /^1[3456789]\d{9}$/;
        return regex.test(input);
    }

    /**
     * 判断input不能超过maxLength
     * @param input 值
     * @param maxLength 最大长度
     * @returns {boolean} true超过 false未超过
     */
    validateMaxLength(input, maxLength) {
        return input.length <= maxLength;
    }

    /**
     * 判断input不能低于minLength
     * @param input 值
     * @param minLength 最小长度
     * @returns {boolean} true未低于 false低于
     */
    validateMinLength(input, minLength) {
        return input.length >= minLength;
    }

    /**
     * 判断值是否在规定范围内
     * @param input 值
     * @param min 最小值
     * @param max 最大值
     * @returns {boolean} true范围内 false范围外
     */
    validateRange(input, min, max) {
        const length = input.length;
        return length >= min && length <= max;
    }

    /**
     * 判断值是否在规定长度内空格也算
     * @param input 值
     * @param minLength 最小长度
     * @param maxLength 最大长度
     * @return {boolean} true未超过 false超过
     */
    validateRangeLength(input, minLength, maxLength) {
        let length = input.length;
        return !(length < minLength || length > maxLength);
    }

    /**
     * 上浮动画
     * @param input 文本框
     * @param inputText 动画字体
     * @param hintText 提示字体
     * @param text 提示内容
     */
    inputAnimation(input, inputText, hintText, text) {
        //获得焦点上浮
        input.on("click", function () {
            inputText.css({"transform": "translate3d(0px,-12px,500px)", "font-size": "14px"})
        });

        input.on("blur", function () {
            let inputValue = input.val();

            if (inputValue.trim() == null || inputValue.trim() === "") {
                inputText.css("color", "#f04645");

                hintText.text(text);

                inputText.css({"transform": "translate3d(0px,0px,500px)", "font-size": "20px"})

            } else if (inputValue.trim() != null || inputValue.trim() !== "") {
                inputText.css("color", "#5E5E5E")

                hintText.text("");

            }
        });
    }

    /**
     * 自定义动画
     * @param input 文本框
     * @param text 字体
     * @param frame 边框
     * @param right 左右移动距离
     * @param under 上下移动距离
     */
    customizeAfloatAnimation(input, text, frame, right, under) {
        input.on('focus', function () {
            // 文本框获取焦点时的操作
            $(text).css({
                "transform": "translate3d(" + right + "px," + under + "px,500px)",
                "font-size": "12px",
                "color": "#FF6700"
            })
            $(frame).css({
                "border": "1px solid #FF6700"
            })
        });
        input.on("blur", function () {
            // 文本框失去焦点时的操作
            if ($(this).val() === "") {
                $(text).css({
                    "transform": "translate3d(0px,0px,500px)",
                    "font-size": "15px",
                })
                $(frame).css({
                    "border": "1px solid #e0e0e0"
                })
            }$(text).css({"color": "#e0e0e0"});
        })
    }

    /**
     * 自定义动画辅助包
     * @param input 文本框
     * @param text 字体
     * @param frame 边框
     * @param right 左右移动距离
     * @param under 上下移动距离
     */
    customAnimationAids(input, text, frame, right, under) {
        // 文本框失去焦点时的操作
        if (input.val() !== "") {
            $(text).css({
                "transform": "translate3d(" + right + "px," + under + "px,500px)",
                "font-size": "12px",
                "color": "#e0e0e0"
            })
        }
        input.on("blur", function () {
            if (input.val() === "") {
                $(text).css({
                    "transform": "translate3d(0px,0px,500px)",
                    "font-size": "15px",
                })
            }
            $(frame).css({
                "border": "1px solid #e0e0e0"
            })
            $(text).css({"color": "#e0e0e0"})
        })
    }


    /**
     * 判断值是否为空
     * @param value 值
     * @return {boolean} true为空 false不为空
     */
    isEmpty(value) {
        // 如果值是 null、undefined、空字符串或长度为零的数组，则认为它是空的
        if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {
            return true;
        }

        // 如果值是对象，并且没有任何属性，则也认为它是空的
        if (typeof value === 'object') {
            for (let key in value) {
                if (value.hasOwnProperty(key)) {
                    return false;
                }
            }
            return true;
        }

        // 其他情况下，值都不为空
        return false;
    }

    /**
     * (?=.*[a-z])：至少包含一个小写字母。
     * (?=.*[A-Z])：至少包含一个大写字母。
     * (?=.*\d)：至少包含一个数字。
     * .{8,20}：密码长度为 8-20 个字符。
     * @param password 密码
     * @return {boolean} 正则表达式返回 true，表示密码符合规范；否则返回 false
     */
    checkPassword(password) {
        let regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,20}$/;
        return regex.test(password);
    }

    /**
     * 查看窗口
     */
    popUpsView() {
        let popUpsDown = $(".pop-ups-down");
        let view = $(".view");
        popUpsDown.on({
            mouseenter: function () {
                $(this).attr({"src": "http://localhost:8083/resource_packs/images/pop_ups_closes_red.png"})
                $(this).css({"width": "25px", "height": "25px"})
            },
            mouseleave: function () {
                $(this).attr({"src": "http://localhost:8083/resource_packs/images/pop_ups_closes.png"})
                $(this).css({"width": "20px", "height": "20px"})
            }
        });
        popUpsDown.on("click", function () {
            $(".window").css("display", "none")
        })
        view.on("click", function () {
            $(".window").css("display", "block")
        })
    }

    /**
     * 新增窗口
     */
    popUpsInsert() {
        let popUpsDown = $(".pop-ups-down");
        let insert = $(".insert");
        popUpsDown.on({
            mouseenter: function () {
                $(this).attr({"src": "http://localhost:8083/resource_packs/images/pop_ups_closes_red.png"})
                $(this).css({"width": "25px", "height": "25px"})
            },
            mouseleave: function () {
                $(this).attr({"src": "http://localhost:8083/resource_packs/images/pop_ups_closes.png"})
                $(this).css({"width": "20px", "height": "20px"})
            }
        });
        popUpsDown.on("click", function () {
            $(".add-window").css("display", "none")
        })
        insert.on("click", function () {
            $(".add-window").css("display", "block")
        })
    }
}